package com.baosight.sczx.common.zm.cInterface.cp;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

import com.baosight.iplat4j.core.spring.SpringApplicationContext;
import com.baosight.iplat4j.dao.Dao;
import com.baosight.sczx.zm.cp.domain.ZMCPProfessionalPlan;

public class ProfessionalPlan {
	
	private static Dao dao = (Dao)SpringApplicationContext.getBean("dao");
	
	/**
	 * 根据采煤计划明细的变动
	 * 更新专业计划主表的数据
	 * 参数为专业计划keyID
	 */
	@SuppressWarnings("rawtypes")
	public static boolean updateByCM(String fdKeyId) {
		if(fdKeyId == null || fdKeyId.trim().equals("")) {
			return false;
		}
		Map<String, String> _map = new HashMap<String, String>();
		_map.put("fdKeyId", fdKeyId);
		List result = dao.query("ZMCPProfessionalPlan.query", _map);
		if(result == null || result.isEmpty()) {
			return false;
		}
		else {
			ZMCPProfessionalPlan profPlan = (ZMCPProfessionalPlan)result.get(0);
			//如果草拟，更新专业计划数据

			if(StringUtils.isNotBlank(profPlan.getFdPlanStatus()) && profPlan.getFdPlanStatus().equals("草拟")) {
				Map<String, BigDecimal> _result = ProducePlanCM.CMModify(fdKeyId, null);
				
				profPlan.setFdYmSum(_result.get("ymSum") == null ? new BigDecimal("0") : _result.get("ymSum"));//原煤产量
				profPlan.setFdHf(_result.get("hf") == null ? new BigDecimal("0") : _result.get("hf"));//原煤灰分
				profPlan.setFdBhcmj(_result.get("bhcmj") == null ? new BigDecimal("0") : _result.get("bhcmj"));//保护层面积
				profPlan.setFdZhmcmj(_result.get("zhmcmj") == null ? new BigDecimal("0") : _result.get("zhmcmj"));//中厚煤层面积
				profPlan.setFdTjd(_result.get("tjd") == null ? new BigDecimal("0") : _result.get("tjd"));//推进
				profPlan.setFdGx(_result.get("gx") == null ? new BigDecimal("0") : _result.get("gx"));//功效
				
				dao.update("ZMCPProfessionalPlan.updateByCM", profPlan.toMap());//更新专业计划主表数据
			}
			
			//不是草拟，滚蛋 byebye
		}
		
		return true;
	}

	/**
	 * 根据掘进计划明细的变动
	 * 更新专业计划主表的数据
	 * 参数为专业计划keyID
	 */
	@SuppressWarnings("rawtypes")
	public static boolean updateByJJ(String fdKeyId) {
		//先判断专业计划主表是否为草拟
		if(fdKeyId == null || fdKeyId.trim().equals("")) {
			return false;
		}
		Map<String, String> _map = new HashMap<String, String>();
		_map.put("fdKeyId", fdKeyId);
		List result = dao.query("ZMCPProfessionalPlan.query", _map);
		if(result == null || result.isEmpty()) {
			return false;
		}
		else {
			ZMCPProfessionalPlan profPlan = (ZMCPProfessionalPlan)result.get(0);
			//如果草拟，更新专业计划数据

			if(StringUtils.isNotBlank(profPlan.getFdPlanStatus()) && profPlan.getFdPlanStatus().equals("草拟")) {
				Map<String, BigDecimal> _result = ProducePlanJJ.JJModify(fdKeyId, null);
				profPlan.setFdJcSum(_result.get("jcSum") == null ? new BigDecimal("0") : _result.get("jcSum"));//掘进总进尺			
				dao.update("ZMCPProfessionalPlan.updateByJJ", profPlan.toMap());//更新专业计划主表数据
			}
			
			//不是草拟，滚蛋 byebye
		}
		
		return true;
	}
	
	/**
	 * 判断专业计划是否上报
	 * @param fdKeyId
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static boolean validate(String fdKeyId) {
		if(fdKeyId == null)
			return true;
		
		Map<String, String> _map = new HashMap<String, String>();
		_map.put("fdKeyId", fdKeyId);
		_map.put("fdPlanStatus", "草拟");
		List result = dao.query("ZMCPProfessionalPlan.query", _map);
		
		if(result == null || result.isEmpty()) {
			//主表都不存在，则不能新增从表
			return false;
		}
		else {
			return true;
		}
	}
}
